package com.zh.note.huawei.twohundred.通过软盘拷贝文件;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        int[] value = new int[n];
        int[] weight = new int[n];
        for (int i = 0; i < n; i++) {
            value[i] = input.nextInt();
        }

        int W = 1474560 / 512;

        int[][] dp = new int[n][W + 1];
        for (int i = 0; i < n; i++) {
            weight[i] = (int) Math.ceil(value[i] / 512.0);
        }
        //初始化
        for (int j = weight[0]; j <= W; j++) {
            dp[0][j] = value[0];
        }
        for (int i = 1; i < value.length; i++) {
            for (int j = 0; j <= W; j++) {
                 if (j < weight[i]) {
                    /**
                     * 当前背包的容量都没有当前物品i大的时候，是不放物品i的
                     * 那么前i-1个物品能放下的最大价值就是当前情况的最大价值
                     */
                    dp[i][j] = dp[i - 1][j];
                } else {
                    /**
                     * 当前背包的容量可以放下物品i
                     * 那么此时分两种情况：
                     *    1、不放物品i
                     *    2、放物品i
                     * 比较这两种情况下，哪种背包中物品的最大价值最大
                     */
                    dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);
                }
            }

        }
        System.out.println(dp[n - 1][W]);
    }
}

